import { ElMessage } from 'element-plus'
import router from './router'
import tools from './utils/tools'
import pinia from './store'
import useUserStore from './store/modules/user'

// 为什么要加一个 pinia ？
// 在其他页面级组件可以直接使用 store = useUserStore()
// 在全局使用会报错

// 创建 store
const store = useUserStore(pinia)

// 白名单<不需要权限即可进入>
const whitelist = ['/login']

// 当前用户路由菜单

// // 全局前置守卫
// eslint-disable-next-line consistent-return, no-unused-vars
router.beforeEach(async (to, from) => {
  const token = sessionStorage.getItem('token')
  
  if (!whitelist.includes(to.path)) {
    if (!token) {
      ElMessage.error('登录过期')
      return '/login'
    }
    // 权限处理
    // 如果没有用户信息
    if (!store.getRole) {
      // 权限查询
      // 当前用户信息
      const { role } = await store.getUserInfoAction()
      console.log("role",role);
      
      // 当前用户权限菜单信息
      const { menus } = await store.generateRoutesAndMenus(role)
      console.log("role",menus);

      // 动态路由添加
      menus.forEach((route:any) => router.addRoute(menus))
      console.log("我是routes",router);
      

      return to
    }
    if (!store.getRouterRoles.includes(to.path)) {

    }
  } else if (token) {
    ElMessage.success('您已经登录')
    return '/'
  }
})
// 添加全局后置守卫
router.afterEach((to, from) => {
  const title = (to.meta.title as string) || '管理系统' // 获取路由配置中的 title 字段或默认标题
  document.title = title // 设置页面标题
})
